Method, system and apparatus for dynamically controlling web-based media galleries

ABSTRACT

A method is provided of dynamically updating sequence data for media files in a media gallery. The method includes: receiving at a control server via a network, from a client device displaying the media gallery according to the sequence data, event data defining an interaction with a first media file in the media gallery; at the control server, storing the event data in a first database as a plurality of nodes; at the control server, determining whether the event data represents a selection of the first media file; and when the determination is affirmative, incrementing a counter corresponding to the first media file. In response to a subsequent request for the gallery, the control server generates updated sequence data for the gallery based on the counter.

FIELD

The specification relates generally to web-based image galleries, andspecifically to a method, system and apparatus for dynamicallycontrolling such web-based image galleries.

BACKGROUND

Web-based media (e.g. images, videos) galleries are common, for exampleon travel websites such as those operated by hotels. Media for suchgalleries may be selected and arranged manually and in an ad-hocfashion. Such manual selection and arrangement of media in web-basedgalleries may be time-consuming and error-prone, and thus makesinefficient use of available computing resources.

BRIEF DESCRIPTIONS OF THE DRAWINGS

Embodiments are described with reference to the following figures, inwhich:

FIG. 1 depicts a communication system, according to a non-limitingembodiment;

FIGS. 2A and 2B depict a web page with a gallery in the system of FIG.1, according to a non-limiting embodiment;

FIG. 3 depicts the control server of FIG. 1, according to a non-limitingembodiment;

FIG. 4 depicts a method in the control server of FIG. 1, according to anon-limiting embodiment;

FIG. 5 depicts example nodes stored by the control server of FIG. 1,according to a non-limiting embodiment;

FIG. 6 depicts further example nodes stored by the control server ofFIG. 1, according to a non-limiting embodiment;

FIG. 7 depicts a continuation of the method of FIG. 4, according to anon-limiting embodiment;

FIG. 8 depicts an updated web page in the system of FIG. 1, according toa non-limiting embodiment;

FIG. 9 depicts logical groupings of the components of the control serverof FIG. 1, according to a non-limiting embodiment;

DETAILED DESCRIPTION OF THE EMBODIMENTS

FIG. 1 depicts a communications system 100 including a plurality ofclient computing devices, of which three examples 104-1, 104-2 and 104-3are illustrated (referred to generically as a client computing device orclient device 104, and collectively as client computing devices orclient devices 104). Each client device 104 can be any one of a cellularphone, a smart phone, a tablet computer, a desktop computer, and thelike. Thus, client devices 104 each include hardware components such asprocessors, memories, network interfaces, input and output devices, andthe like.

Client devices 104 are connected to a network 108 via communicationslinks that can be wired, wireless, or any suitable combination of wiredand wireless. Network 108 can include any suitable combination of wiredand wireless networks, including but not limited to a Wide Area Network(WAN) such as the Internet, a Local Area Network (LAN) such as acorporate data network, cell phone networks, WiFi networks, WiMaxnetworks and the like.

Via network 108, client devices 104 can communicate with other computingdevices, including a web server 112 hosting one or more web pages, and agallery server 116. Web server 112 and gallery server 116 can each bebased on any suitable computing platform, and thus each include at leastone processor, a memory, a network interface, and the like. In someembodiments, web server 112 and gallery server 116 can be integratedinto a single computing device, as will become apparent to those skilledin the art in the discussion below. For illustrative purposes, however,web server 112 and gallery server 116 will be described as separatedevices. System 100 also includes a control server 120 connected tonetwork 108, whose functions will be described in detail herein.

In brief, client devices 104 can request the above-mentioned web pagefrom web server 112, and receive the web page from web server 112 overnetwork 108 (see signal path 124). The web page includes a mediagallery, to be discussed in greater detail below, that is hosted bygallery server 116. Thus, once the web page has been received from webserver 112 at client device 104-1, client device 104-1 sends a furtherrequest for the media gallery.

The gallery hosted by gallery server 116 comprises a set ofcomputer-readable instructions (e.g. a software object for execution bythe processor of client device 104-1) and one or more media files suchas images or videos. The gallery's instructions configure client device104-1 to display the media files within the web page received from webserver 112. The gallery also includes sequence data specifying an orderin which the media files are to be displayed at client device 104-1. Inaddition, the media files are selectable when displayed at client device104-1, and thus client device 104-1 can be controlled (e.g. by anoperator, via a touch screen) to display the media files in a differentorder than that specified by the sequence data. In the present example,gallery server 116 hosts both the media itself (e.g. the image and videofiles) and the data identifying the media files and their sequence. Inother embodiments, the media and the identifying and sequence data maybe stored separately.

Having received the web page from web server 112, client device 104-1requests the media gallery from a control server 120 (see signal path128) connected to network 108. Client device 104-1 is also configured(via execution of the instructions contained in the media gallery) toreport interactions with the gallery at client device 104-1 (e.g. theselection of an image for display at client device 104-1) to controlserver 120 as event data.

Control server 120 is therefore configured to receive requests forgalleries from client devices 104, and event data describinginteractions with the galleries at client devices 104. Control server120 is configured to respond to requests for galleries by retrieving therequested galleries from gallery server 116 (see signal path 132), andsending the retrieved gallery to the requesting client device 104. Thegallery sent from control server 120 to client device 104-1 can includethe media files themselves, or can include only the above-mentionedinstructions and metadata (a sequence of the media files and identifiersof the files, to be used by client device 104-1 to retrieve the mediafiles via network 108).

Before providing the gallery (including at least the sequencing data) toclient device 104-1, however, control server 120 is configured toautomatically and dynamically alter the sequencing data from its stateas received from gallery server 116. The dynamic alterations tosequencing data are performed by control server 120 based on event datareceived from client devices 104, as will be discussed below in greaterdetail.

Before discussing the functionality of control server 120 in detail, anexample web page and image gallery will be discussed, followed by abrief discussion of certain internal components of control server 120.

Turning to FIG. 2A, an example web page 200 is illustrated, as presentedon a display of a client device 104. Web page 200, in the presentexample, is a web page containing information about a hotel. Web server112 can therefore be (but need not be) operated by the hotel, whilegallery server 116 can be operated by a service provider contracted bythe hotel. In other examples, however, web server 112 and gallery server116 may be operated by entities other than the hotel, or may both beoperated by the hotel.

The contents of web page 200 is not particularly limited, and a widevariety of such web pages will now occur to those skilled in the art. Agallery 204 is embedded within web page 200. The retrieval of web page200 by client device 104-1, as mentioned above, includes receiving webpage 200 from web server 112 and receiving gallery 204 from controlserver 120 (which in turn received gallery 204 from gallery server 116).Image gallery 204 contains a plurality of thumbnail images 208-1, 208-2,208-3, 208-4, 208-5, 208-6, each corresponding to an image of the hotel,a room within the hotel, a surrounding area, and the like. In someembodiments, thumbnail images 208 are lower-resolution versions of thecorresponding images, while in other embodiments thumbnail images 208and the corresponding “full” images are the same files, simply displayedat different physical sizes. As mentioned earlier, the actual imagefiles (or any other form of media, such as video files) can be receivedfrom control server, or can be retrieved by client devices 104 fromanother computing device (such as gallery server 116) using identifiersprovided by control server 120.

Web page 200 can also include other selectable elements, such as abooking element 212 for initiating an electronic booking process tosecure a room at the hotel. Additional selectable elements will alsooccur to those skilled in the art. Other data, such as a hotel address216, may also be included in web page 200.

As seen in FIG. 2A, images 208 are presented in an order specified bysequence data 220 contained within gallery 204 (but not necessarilyexplicitly presented on the display of the client device 104). Any oneof images 208 can be selected at the client device 104 to cause theclient device 104 to present the image 208 in enlarged form (to theexclusion of the other images 208) within gallery 204. Referring to FIG.2B, an updated rendering of web page 200 is illustrated, following aselection at the client device 104 of thumbnail image 208-3. Image 208-3is presented in a larger format in image gallery 204, and the remainingimages 208 are no longer visible. In other embodiments, the other imagesmay remain visible, for example along the bottom of gallery 204, stillin the order specified by sequence data 220. In some examples, gallery204 can also include a selectable element (not shown) for advancing fromthe view of FIG. 2B to the next image 208 in the sequence (image 208-4in the present example).

Having described web page 200 and gallery 204, certain internalcomponents of control server 120 will now be discussed, following whichthe functionality of control server 120 will be described in detail.

Referring to FIG. 3, a schematic diagram of certain internal componentsof control server 120 is depicted. Control server 120 includes at leastone central processing unit (also referred to as a microprocessor orsimply a processor) 300 interconnected with at least one non-transitorycomputer readable storage medium such as a memory 304.

Processor 300 and memory 304 are generally comprised of one or moreintegrated circuits (ICs), and can have a variety of structures, as willnow occur to those skilled in the art (for example, more than one CPUcan be provided). Memory 304 can be any suitable combination of volatile(e.g. Random Access Memory (“RAM”)) and non-volatile (e.g. read onlymemory (“ROM”), Electrically Erasable Programmable Read Only Memory(“EEPROM”), flash memory, magnetic computer storage device, or opticaldisc) memory. In the present example, memory 304 includes both avolatile memory and a non-volatile memory. Other types of non-transitorycomputer readable storage medium are also contemplated, such as compactdiscs (CD-ROM, CD-RW) and digital video discs (DVD).

Control server 120 also includes a network interface 308 interconnectedwith processor 300. Network interface 308 allows control server 120 tocommunicate with other computing devices (e.g. image server 116) vianetwork 108. Network interface 308 thus includes any necessary hardwarefor communicating over such networks, network interface controllers(NICs), radios and the like.

Control server 120 can also include input devices (not shown) such as akeyboard and mouse, as well as output devices (not shown) such as adisplay. Such input and output devices can be connected to processor 300directly, for example via a USB connection, or remotely via anothercomputing device (not shown). In other words, the input and outputdevices used for operator control of control server 120 can be local orremote to control server 120.

Control server 120 stores, in memory 304, a plurality of applicationseach comprising a plurality of computer-readable instructions that areexecutable by processor 300. In particular, memory 304 stores an eventrecordal application 312, and a sequencing application 324 (respectivelyreferred to herein as applications 312 and 324).

When processor 300 executes the instructions of each of applications 312and 324, processor 300 performs various functions implemented by thoseinstructions, as will be discussed below. Processor 300, or controlserver 120 more generally, is therefore said to be “configured” toperform those functions via the execution of the above-mentionedapplications.

Also stored in memory 304 are various data repositories, including anevents database 328, and a media metadata index 336. The contents ofeach of the above-mentioned repositories will be detailed below.

As stated earlier, control server 120 is configured to receive eventdata from client devices 104 (the event data representing interactionswith image gallery 204 at client devices 104), and to respond torequests for gallery 204 (or any other of a plurality of gallerieshosted by gallery server 116) from client devices 104 by retrievinggallery 204 from gallery server 116, updating the sequencing of mediafiles in gallery 204 and returning the updated gallery to the requestingclient devices 104. The handling of event data and the generation ofsequence data at control server 120 will now be described in detail,with reference to FIG. 4.

FIG. 4 depicts a method 400 of dynamically updating an image gallery.Method 400 will be discussed in conjunction with its performance insystem 100, and in particular, the blocks of method 400 will bedescribed as being performed by control server 120. It will be apparentto those skilled in the art, however, that method 400 can also beimplemented in other systems and on other servers.

Beginning at block 405, control server 120 is configured to receiveevent data from a client device 104, defining one or more interactionswith image gallery 204 at that client device 104. In general, aninteraction defined by the event data comprises the selection of aselectable element of gallery 204, such as an image 208. As notedearlier, gallery 204 includes computer-readable instructions that causeclient devices 104 to report activity related to gallery 204 to controlserver 120.

The format in which the event data is received at block 405 is notparticularly limited. In general, the event data includes an identifierassociated with gallery 204, an identifier of the media file withingallery 204 that was interacted with at the client device 104, and anindication of the type of interaction with that element. Thus, forexample, when image 208-3 as illustrated in FIG. 2A is selected (e.g. bydepression of a touch screen on client device 104-1), client device104-1 reports the selection to control server 120 via network 108. Theevent data can also include other parameters, such as the date and time.

The media identifiers in the event data can be, for example, file namesor other identifiers employed by gallery server 116. The galleryidentifiers can also be file names or other identifiers employed bygallery server 116 to distinguish various galleries from each other.Thus, for example, the following event data is assumed to be received atblock 405:

TABLE 1 Example event data from image server 116 Gallery ID Media IDAction Timestamp 204 208-3 View 11/23/2014; 08:00

The format of the event data received at control server 120 can varywidely, and the tabular format shown above is provided solely forillustrative purposes.

Having received event data at block 405, control server 120 isconfigured to determine, at block 410, whether any nodes correspondingto the entity (e.g. gallery and media) identifiers in the received eventdata exist in events database 328. The determination at block 410 isperformed by inspecting database 328 to determine whether a node alreadyexists with the received gallery identifier, or whether a node alreadyexists with the received media identifier (no check is performed inconnection with the type of action in the event data). A discussion ofnodes and their structures will be provided below.

In the present example performance of method 400, it is assumed thatevents database 328 is empty, and thus the determination at block 410 isnegative. Control server 120 thus proceeds to block 415 and createsnodes corresponding to the entities (gallery and media) defined in theevent data received at block 405. Having created the entity nodes atblock 415, control server 120 then creates a node corresponding to theaction defined in the event data at block 420. When the determination isaffirmative at block 410, control server proceeds directly to block 420,without creating entity nodes. In other embodiments, at block 420control server 120 can also make updates to existing entity nodes.

Turning to FIG. 5, an example of database 328 following the performanceof blocks 415 and 420 is illustrated. Database 328 is a graph database,which in the present example is structured according the known graphdatabase engine Neo4j™. Database 328 thus includes a plurality of nodes.In general, each event defined by event data received at block 405results in the creation or updating of three nodes: a node correspondingto gallery 204 (or any other gallery being interacted with at a clientdevice 104), a node corresponding to the selected media element ofgallery 204 (e.g. an image), and a node corresponding to the actionperformed at client device 104 with respect to that media element. Theaction can be, for example, a selection action (referred to herein as a“view”, indicating activation of an input device at client device 104 toselect the media element) or a load action (indicating that the mediaelement has been presented on the display of client device 104-1, butnot in response to an input device activation). In other words, thenodes of database 328 represent entities (galleries such as gallery 204and media such as images 208) and actions (such as selections of images208 by client devices 104).

Thus, at blocks 415 and 420, control server 120 is configured to createthree nodes 504, 508 and 512 in database 328, and to update those nodesto contain the event data received at block 405. Each node containsvarious data fields, including a node type and one or more nodeproperties. In the present example, node 504 corresponds to gallery 204and thus includes a node type field indicating that node 504 representsa gallery. Node 504 also includes properties in the form of a galleryidentifier and a creation timestamp containing the time and date atwhich node 504 was created in database 328. Control server 120 can beconfigured to apply constraints to nodes, such as a constraint that thegallery identifier property must be unique.

Node 508 includes a node type field indicating that node 508 representsan image, as well as properties including an identifier of the imagerepresented by node 508 and a creation timestamp as described aboverelative to node 504. Other node type identifiers are also contemplated(e.g. particular types of image, types of video, and the like). Controlserver 120 stores a preconfigured list of known media types.

Node 512, meanwhile, establishes a link (represented by dashed arrows inFIG. 5) between nodes 504 and 508. Node 512 thus includes a type fieldindicating that node 512 represents an action (in particular, a “view”or selection action) rather than an entity (e.g. gallery or image). Node512 also contains properties including a creation timestamp, a source(“from”) identifier and a destination (“to”) identifier. The source anddestination properties indicate the entities to which the action definedby node 512 relates (in the present example, gallery 204 and image208-3). Node 512 also contains a session identifier property: controlserver 120 can be configured to assign a session identifier to anyrequest received by a client device 104. The same session identifierwill be used for any further nodes generated in response to event datafrom that same client device 104, until a predetermined time periodpasses without activity from that client device 104 (e.g. twenty-fourhours).

Blocks 405, 410, 415 and 420 are performed by control server 120 via theexecution (by processor 300) of event recordal application 312.Following the storage of event data at block 420, control server 120 isconfigured to perform block 435 of method 400. Block 435, like blocks405, 410, 415 and 420, is performed by control server 120 via theexecution of application 312.

At block 435, control server 120 determines whether the type of theaction node created at block 420 is “view”. In other words, thedetermination at block 435 is whether the media element defined in theevent data received at block 405 was explicitly selected by the operatorof the client device 104. If the determination at block 435 is negative,the performance of method 400 returns to block 405 to await the nextevent data. When the determination at block 435 is affirmative, however,control server 120 proceeds to block 440.

At block 440, which is also performed via the execution of application312, control server 120 is configured to update metadata in index 336associated with the media element referred to in the event data receivedat block 405. In particular, the metadata is a weighted counterrepresenting the number of times that media element has been selected.An example of index 336 is shown below:

TABLE 2 Example Index 336 Gallery Media Value 204 Image 208-3 3

Index 336, in the present example, is implemented using the known Redis™data structure server. Index 336 includes, for each gallery (in thepresent example, only gallery 204), a set of key/value pairs for themedia contained within the gallery. In the present example, since eventdata has only been received for image 208-3, the set for gallery 204currently only contains a single key/value pair. As seen above, oneselection of image 208-3 results in incrementing the value correspondingto image 208-3 by three. Other increment values can also be implemented.

Following the performance of block 440, control server 120 proceeds toblock 455, illustrated in FIG. 7. Before discussing the performance ofblock 455 and subsequent blocks of method 400, it is assumed thatadditional performances of blocks 405 to 440 result in the creation andupdating of additional nodes in database 328, and additional updates toindex 336. Referring to FIG. 6, an updated database 328′ is shown,including nodes 504, 508 and 512. In addition, database 328′ includesadditional nodes 600, 604 and 608 which represent, respectively, anadditional selection of image 208-3 (in a different client session), anda selection of another image (image 208-6, represented by node 608) ingallery 204.

Following the repeated performances of method 400 in response to theabove-mentioned event data, index 336 has the following contents:

TABLE 3 Updated Index 336 Gallery Media Value 204 Image 208-3 6 Image208-6 3

Returning to FIG. 7, the remaining blocks of method 400 are performed bycontrol server 120 via the execution of application 324. At block 455control server 120 is configured to receive a gallery request from aclient device 104. For example, a request for gallery 204 can bereceived from client device 104-2. Having received the request, controlserver 120 sends a request to gallery server 116 at block 460 for atleast the sequencing data for that gallery (the request can be for otherdata as well, up to and including the entirety of the requested gallery,including all instructions and media files). Thus, at block 460 controlserver 120 receives sequencing data 220 shown in FIG. 2.

Also at block 460, control server 120 is configured to retrieve datafrom index 336 that corresponds to the requested gallery. Thus, at block460 control server 120 retrieves the contents of Table 3 above.

At block 465, control server 120 generates updated sequencing data fromthe sequencing data received at block 460, based on the index dataretrieved at block 460. In general, the sequencing data received atblock 460 is re-ordered to place the media identifiers having thehighest corresponding values in index 336 first. Any media identifiersthat do not appear in index 336 are placed after media identifiers thatdo appear in index 336, in the order they originally appeared in.

At block 470, having dynamically re-sequenced the media in gallery 204,control server 120 returns the re-sequenced gallery to client device104-2 in response to the request received at block 455.

Turning to FIG. 8, a further example of web page 200 is shown asrendered on a display of a client device 104. Certain portions of webpage 200 (e.g. 212, 216) are unchanged. However, image gallery 204 hasbeen updated and thus appears as image gallery 204′, in which image208-3 is presented first, and image 208-6 is presented second. The orderof presentation of images 208 is influenced by revised sequencing data220′ received at image server 116 from control server 120. It is notedthat sequencing data 220′ specifies sequence positions for images 208-1,208-2, 208-4 and 208-5 that are equivalent to their original positions,with the exception of the relocation of images 208-3 and 208-6.

Various advantages to the above systems and methods will now occur tothose skilled in the art. For example, the automatic updating ofsequencing data by control server 120 reduces or eliminates the need formanual construction of image galleries. In addition, the collection ofevent data based upon which the sequencing data is generated allows theunpredictable actions of the operators of client devices 104 to act asfeedback on the structure of image galleries, again automatically andwithout the need for any manual intervention by the operators of imageserver 116 or control server 120.

Variations to the above systems and methods are contemplated. Forexample, although the applications and databases described herein areillustrated in FIG. 3 as being hosted on control server 120, in otherembodiments they may be separated among many computing devices. Forexample, referring to FIG. 9, the applications and databases originallyshown in FIG. 3 are depicted in four logical groupings. The firstgrouping, 900, contains event recordal application 312 and eventdatabase 328. The second grouping, 908, contains index 336. The thirdgrouping, 912, contains sequencing application 324.

Each of the above-mentioned groupings 900, 908 and 912 can beimplemented on a separate logical computing device, and any logicaldevice may be implemented on one or a plurality of physical computingdevices (such as control server 120 illustrated earlier). Thus, in someimplementations, grouping 900 can be implemented on a bank of serversacting as a single logical device, while groupings 908 and 912 can allbe implemented on a single logical and physical device. A wide varietyof other implementations will also now occur to those skilled in theart.

Persons skilled in the art will appreciate that there are yet morealternative implementations and modifications possible for implementingthe embodiments, and that the above implementations and examples areonly illustrations of one or more embodiments. The scope, therefore, isonly to be limited by the claims appended hereto.

We claim:
 1. A method of dynamically updating sequence data for mediafiles in a media gallery, comprising: receiving at a control server viaa network, from a client device displaying the media gallery accordingto the sequence data, event data defining an interaction with a firstmedia file in the media gallery; at the control server, storing theevent data in a first database as a plurality of nodes; at the controlserver, determining whether the event data represents a selection of thefirst media file; and when the determination is affirmative,incrementing a counter corresponding to the first media file.
 2. Themethod of claim 1, wherein the plurality of nodes comprise a first nodecorresponding to the media gallery, a second node corresponding to themedia file, and a third node corresponding to the interaction.
 3. Themethod of claim 2, wherein the third node contains references to thefirst and second nodes.
 4. The method of claim 1, further comprising:receiving, at the control server from the client device, further eventdata defining a further interaction with a second media file in themedia gallery; at the control server, storing the further event data inthe first database; at the control server, determining whether thefurther event data represents a selection of the second media file; andwhen the determination is affirmative, incrementing a countercorresponding to the second media file.
 5. The method of claim 4,wherein storing the further event data comprises creating a fourth nodecorresponding to the further interaction, the fourth node containingreferences to the first and second nodes.
 6. The method of claim 4,further comprising storing the counters corresponding to the first andsecond media files in association with an identifier of the gallery. 7.The method of claim 4, further comprising: receiving a request for themedia gallery from another client device; transmitting a query for themedia gallery to a gallery server; responsive to the query, receiving atleast the sequence data from the gallery server; retrieving the counterscorresponding to the first and second media files; generating updatedsequence data based on the sequence data and the counters; and sendingthe media gallery with the updated sequence data to the other clientdevice.
 8. The method of claim 7, wherein the updated sequence datacontains an identifier of each media file in the media gallery, and aposition corresponding to each media file identifier.
 9. The method ofclaim 8, further comprising assigning the positions to the media fileidentifiers in descending order of the corresponding counters.
 10. Themethod of claim 1, wherein the media files are selected from the groupconsisting of image files and video files.
 11. The method of claim 1,wherein a selection of the first media file consists of a user selectionof the first media file via an input of the client device.
 12. A controlserver, comprising: a network interface; a memory; and a processorconfigured to perform the method of claim 1.